home *** CD-ROM | disk | FTP | other *** search
/ Oh!X 2000 Spring / Oh!X 2000 Spring Special CD-ROM (Japan) (Part 1).7z / Oh!X 2000 Spring Special CD-ROM (Japan) (Part 1).bin / F2JW / MainFrm.cpp < prev    next >
C/C++ Source or Header  |  1999-12-31  |  6KB  |  242 lines

  1. // MainFrm.cpp : CMainFrame クラスの動作の定義を行います。
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "f2jw.h"
  6.  
  7. #include "MainFrm.h"
  8. #include "FrnDoc.h"
  9. #include "FrnView.h"
  10. #include "JpnView.h"
  11.  
  12. #include "trans\\f2j.h"
  13. #include "trans\\MyProt.h"
  14.  
  15. #ifdef _DEBUG
  16. #define new DEBUG_NEW
  17. #undef THIS_FILE
  18. static char THIS_FILE[] = __FILE__;
  19. #endif
  20.  
  21. /////////////////////////////////////////////////////////////////////////////
  22. // CMainFrame
  23.  
  24. IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd)
  25.  
  26. BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
  27.     //{{AFX_MSG_MAP(CMainFrame)
  28.     ON_WM_CREATE()
  29.     ON_COMMAND(ID_WINDOW_JAPANESE, OnWindowJapanese)
  30.     ON_COMMAND(ID_WINDOW_FRENCH, OnWindowFrench)
  31.     ON_COMMAND(ID_TEST_FRENCH, OnTestFrench)
  32.     ON_COMMAND(ID_TEST_JAPANESE, OnTestJapanese)
  33.     ON_COMMAND(ID_WINDOW_CONSOLE, OnWindowConsole)
  34.     ON_COMMAND(ID_TRANSLATE_SENTENCE, OnTranslateSentence)
  35.     //}}AFX_MSG_MAP
  36. END_MESSAGE_MAP()
  37.  
  38. static UINT indicators[] =
  39. {
  40.     ID_SEPARATOR,           // ステータス ライン インジケータ
  41.     ID_INDICATOR_KANA,
  42.     ID_INDICATOR_CAPS,
  43.     ID_INDICATOR_NUM,
  44.     ID_INDICATOR_SCRL,
  45. };
  46.  
  47. /////////////////////////////////////////////////////////////////////////////
  48. // CMainFrame クラスの構築/消滅
  49.  
  50. CMainFrame::CMainFrame()
  51. {
  52.     // TODO: この位置にメンバの初期化処理コードを追加してください。
  53.     
  54. }
  55.  
  56. CMainFrame::~CMainFrame()
  57. {
  58. }
  59.  
  60. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
  61. {
  62.     if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
  63.         return -1;
  64.  
  65.     if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
  66.         | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
  67.         !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
  68.     {
  69.         TRACE0("Failed to create toolbar\n");
  70.         return -1;      // 作成に失敗
  71.     }
  72.  
  73.     if (!m_wndStatusBar.Create(this) ||
  74.         !m_wndStatusBar.SetIndicators(indicators,
  75.           sizeof(indicators)/sizeof(UINT)))
  76.     {
  77.         TRACE0("Failed to create status bar\n");
  78.         return -1;      // 作成に失敗
  79.     }
  80.  
  81.     // TODO: ツール バーをドッキング可能にしない場合は以下の3行を削除
  82.     //       してください。
  83.     m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
  84.     EnableDocking(CBRS_ALIGN_ANY);
  85.     DockControlBar(&m_wndToolBar);
  86.  
  87.     return 0;
  88. }
  89.  
  90. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
  91. {
  92.     if( !CMDIFrameWnd::PreCreateWindow(cs) )
  93.         return FALSE;
  94.     // TODO: この位置で CREATESTRUCT cs を修正して、Window クラスやスタイルを
  95.     //       修正してください。
  96.  
  97.     return TRUE;
  98. }
  99.  
  100. /////////////////////////////////////////////////////////////////////////////
  101. // CMainFrame クラスの診断
  102.  
  103. #ifdef _DEBUG
  104. void CMainFrame::AssertValid() const
  105. {
  106.     CMDIFrameWnd::AssertValid();
  107. }
  108.  
  109. void CMainFrame::Dump(CDumpContext& dc) const
  110. {
  111.     CMDIFrameWnd::Dump(dc);
  112. }
  113.  
  114. #endif //_DEBUG
  115.  
  116. /////////////////////////////////////////////////////////////////////////////
  117. // CMainFrame メッセージ ハンドラ
  118.  
  119. void CMainFrame::OnWindowJapanese() 
  120. {
  121.     // TODO: この位置にコマンド ハンドラ用のコードを追加してください
  122.     CFrnApp*    pApp = (CFrnApp*) AfxGetApp();
  123.     if(pApp->m_pFrameJapanese == NULL) {
  124.         CFrameWnd*    pFrame = OpenNewWindow(pApp->m_pTemplateJapanese);
  125.         if(pFrame) {
  126.             pApp->m_pFrameJapanese = pFrame;
  127.             pFrame->SetWindowText("Japanese");
  128.         }
  129.     } else {
  130.         pApp->m_pFrameJapanese->ActivateFrame();
  131.     }
  132. }
  133.  
  134. void CMainFrame::OnWindowFrench() 
  135. {
  136.     // TODO: この位置にコマンド ハンドラ用のコードを追加してください
  137.     CFrnApp*    pApp = (CFrnApp*) AfxGetApp();
  138.     if(pApp->m_pFrameFrench) {
  139.         pApp->m_pFrameFrench->ActivateFrame();
  140.     }
  141. }
  142.  
  143. void CMainFrame::OnWindowConsole() 
  144. {
  145.     // TODO: この位置にコマンド ハンドラ用のコードを追加してください
  146.     CFrnApp*    pApp = (CFrnApp*) AfxGetApp();
  147.     if(pApp->m_pFrameConsole == NULL) {
  148.         CFrameWnd*    pFrame = OpenNewWindow(pApp->m_pTemplateConsole);
  149.         if(pFrame) {
  150.             pApp->m_pFrameConsole = pFrame;
  151.             pFrame->SetWindowText("Console");
  152.         }
  153.     } else {
  154.         pApp->m_pFrameConsole->ActivateFrame();
  155.     }
  156. }
  157.  
  158. CFrameWnd*
  159. CMainFrame::OpenNewWindow(CDocTemplate *pTemplate)
  160. {
  161.     CMDIChildWnd*    pActiveChild = MDIGetActive();
  162.     CDocument*    pDocument;
  163.  
  164.     if(pActiveChild == NULL
  165.         || (pDocument = pActiveChild->GetActiveDocument()) == NULL) {
  166.         TRACE("Warning: No active dcument for WindowNew Command.\n");
  167.         AfxMessageBox(AFX_IDP_COMMAND_FAILURE);
  168.         return(NULL);
  169.     }
  170.  
  171.     ASSERT_VALID(pTemplate);
  172.     pTemplate->GetRuntimeClass();
  173.  
  174.     CFrameWnd*    pFrame = pTemplate->CreateNewFrame(pDocument, pActiveChild);
  175.  
  176.     if(pFrame == NULL) {
  177.         TRACE("Warning: failed to create new frame\n.");
  178.         AfxMessageBox(AFX_IDP_COMMAND_FAILURE);
  179.         return(NULL);
  180.     }
  181.     pTemplate->InitialUpdateFrame(pFrame, pDocument);
  182.     return(pFrame);
  183. }
  184.  
  185.  
  186.  
  187. void CMainFrame::OnTestFrench() 
  188. {
  189.     // TODO: この位置にコマンド ハンドラ用のコードを追加してください
  190.     CFrnApp*    pApp = (CFrnApp*)AfxGetApp();
  191.     unsigned char    str[] = { 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0 };
  192.     CFrameWnd*    pFrame = GetActiveFrame();
  193.  
  194.     if(pFrame == pApp->m_pFrameJapanese) {
  195.         CJpnView*    p = (CJpnView*)pFrame->GetActiveView();
  196.         CRichEditCtrl*    pEdit = &p->GetRichEditCtrl();
  197.         pEdit->SetSel(-1, -1);
  198.         pEdit->ReplaceSel((char *)str);
  199.     } else if(pFrame == pApp->m_pFrameFrench) {
  200.         CFrnView*    pView = (CFrnView*)pFrame->GetActiveView();
  201.         CRichEditCtrl*    pEdit = &pView->GetRichEditCtrl();
  202.         pEdit->SetSel(-1, -1);
  203.         pEdit->ReplaceSel((char *)str);
  204.     }
  205. }
  206.  
  207. void CMainFrame::OnTestJapanese() 
  208. {
  209.     // TODO: この位置にコマンド ハンドラ用のコードを追加してください
  210.     CFrnApp*    pApp = (CFrnApp*)AfxGetApp();
  211.     CFrameWnd*    pFrame = GetActiveFrame();
  212.  
  213.     if(pFrame == pApp->m_pFrameJapanese) {
  214.         CJpnView*    p = (CJpnView*)pFrame->GetActiveView();
  215.         CRichEditCtrl*    pEdit = &p->GetRichEditCtrl();
  216.         pEdit->SetSel(-1, -1);
  217.         pEdit->ReplaceSel("今日は。日本語です。");
  218.     } else if(pFrame == pApp->m_pFrameFrench) {
  219.         CFrnView*    pView = (CFrnView*)pFrame->GetActiveView();
  220.         CRichEditCtrl*    pEdit = &pView->GetRichEditCtrl();
  221.         pEdit->SetSel(-1, -1);
  222.         pEdit->ReplaceSel("今日は。日本語です。");
  223.     }
  224.     
  225. }
  226.  
  227. void CMainFrame::OnTranslateSentence() 
  228. {
  229.     // TODO: この位置にコマンド ハンドラ用のコードを追加してください
  230.     char    lpszBuff[300];
  231.  
  232.     CFrnApp*    pApp = (CFrnApp *)AfxGetApp();
  233.     CFrnView*    pView = (CFrnView *)pApp->m_pFrameFrench->GetActiveView();
  234.     CRichEditCtrl*    pCtrl = &(pView->GetRichEditCtrl());
  235.  
  236.     int    len = pCtrl->GetLine(0, lpszBuff);
  237.     lpszBuff[len] = '\0';
  238.  
  239.     ChangeAccentSymbolsToAscii(lpszBuff);
  240.     Translate(lpszBuff);
  241. }
  242.